home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Diamond Collection
/
The Diamond Collection (Software Vault)(Digital Impact).ISO
/
cdr18
/
dmmatch.zip
/
DMATCH.BAS
next >
Wrap
BASIC Source File
|
1995-01-19
|
9KB
|
381 lines
DIM wads$(100)
DIM file$(100)
DIM plist$(20)
f = 15
b = 0
w = 3
CLS
OPEN "dmatch.dat" FOR INPUT AS #1
INPUT #1, dial '0=dial 1=answer 2=connected
INPUT #1, coop '0=cooperative 1=deathmatch 2=altdeath
INPUT #1, comport
INPUT #1, pnumber$
INPUT #1, diff
INPUT #1, episode
INPUT #1, level
INPUT #1, lgame
INPUT #1, monsters '0=no monsters 1=regular monsters 2=respawning monsters
DO
IF NOT EOF(1) THEN x = x + 1
IF NOT EOF(1) THEN INPUT #1, wads$(x)
LOOP UNTIL EOF(1)
lastwad = x
CLOSE #1
OPEN "wads.dat" FOR INPUT AS #1
FOR x = 1 TO 5
INPUT #1, nul$
NEXT x
x = 0
DO
x = x + 1
LINE INPUT #1, file$(x)
LOOP UNTIL LEFT$(file$(x), 1) = " "
filenum = x
FOR x = 1 TO filenum
file$(x) = LEFT$(file$(x), 12)
z = 0
DO
z = z + 1
t$ = LEFT$(file$(x), z)
LOOP UNTIL RIGHT$(t$, 1) = " " OR RIGHT$(t$, 1) = "."
lft$ = LEFT$(t$, LEN(t$) - 1)
rt$ = RIGHT$(file$(x), 3)
file$(x) = lft$ + "." + rt$
PRINT file$(x)
NEXT x
CLOSE #1
0
no = 0
COLOR f, w
CLS
nocls:
COLOR f, b
LOCATE 1, 1
PRINT TIME$
LOCATE 1, 70
PRINT DATE$
LOCATE 1: text$ = "DaveMatch Ver. 1.0": GOSUB center
LOCATE 7: text$ = "Main Menu": GOSUB center
LOCATE 7, 30
PRINT "╔═════════════════╗"
LOCATE 7: text$ = "Main Menu": GOSUB center
LOCATE 8, 30
COLOR f, b
IF no = 0 THEN COLOR b, f
PRINT "║Com Port ="; comport; " ║"
LOCATE 9, 30
COLOR f, b
IF no = 1 THEN COLOR b, f
PRINT "║Phonelist ║"
LOCATE 10, 30
COLOR f, b
IF no = 2 THEN COLOR b, f
PRINT "║";
IF dial = 0 THEN PRINT "Dial " + pnumber$ + STRING$(12 - LEN(pnumber$), 32);
IF dial = 1 THEN PRINT "Answer ";
IF dial = 2 THEN PRINT "Already Connected";
PRINT "║"
LOCATE 11, 30
COLOR f, b
IF no = 3 THEN COLOR b, f
PRINT "║";
IF coop = 0 THEN PRINT "Cooperative ║"
IF coop = 1 THEN PRINT "Deathmatch ║"
IF coop = 2 THEN PRINT "Deathmatch 2.0 ║"
IF coop = 3 THEN PRINT "One Player Mode ║"
LOCATE 12, 30
COLOR f, b
IF no = 4 THEN COLOR b, f
PRINT "║Difficulty ="; diff; " ║"
LOCATE 13, 30
COLOR f, b
IF no = 5 THEN COLOR b, f
PRINT "║Episode ="; episode; " ║"
LOCATE 14, 30
COLOR f, b
IF no = 6 THEN COLOR b, f
PRINT "║Level ="; level; " ║"
LOCATE 15, 30
COLOR f, b
IF no = 7 THEN COLOR b, f
PRINT "║";
IF lgame = -1 THEN PRINT "No saved game ║"
IF lgame >= 0 THEN PRINT "Load game"; lgame + 1; " ║"
LOCATE 16, 30
COLOR f, b
IF no = 8 THEN COLOR b, f
PRINT "║";
IF monsters = 0 THEN PRINT "No Demons ║"
IF monsters = 1 THEN PRINT "Regular Demons ║"
IF monsters = 2 THEN PRINT "Respawning Demons║"
LOCATE 17, 30
COLOR f, b
IF no = 9 THEN COLOR b, f
PRINT "║Load Wadfiles ║"
LOCATE 18, 30
COLOR f, b
IF no = 10 THEN COLOR b, f
PRINT "║LETS PLAY! ║"
LOCATE 19, 30
COLOR f, b
PRINT "╚═════════════════╝"
DO
a$ = INKEY$
LOOP WHILE a$ = ""
a = ASC(a$)
IF a = 27 THEN GOSUB save: GOTO done
IF a = 13 AND no = 0 THEN comport = comport + 1
IF comport = 5 THEN comport = 1
IF a = 13 AND no = 1 THEN GOTO phonelist
IF a = 13 AND no = 2 THEN dial = dial + 1
IF dial = 3 THEN dial = 0
IF a = 13 AND no = 3 THEN coop = coop + 1
IF coop = 4 THEN coop = 0
IF a = 13 AND no = 4 THEN diff = diff + 1
IF diff = 6 THEN diff = 1
IF a = 13 AND no = 5 THEN episode = episode + 1
IF episode = 4 THEN episode = 1
IF a = 13 AND no = 6 THEN level = level + 1
IF level = 10 THEN level = 1
IF a = 13 AND no = 7 THEN lgame = lgame + 1
IF lgame = 6 THEN lgame = -1
IF a = 13 AND no = 8 THEN monsters = monsters + 1
IF monsters = 3 THEN monsters = 0
IF a = 13 AND no = 9 THEN GOTO wadmenu
IF a = 13 AND no = 10 THEN GOSUB save: GOTO start
IF a$ = CHR$(0) + "H" THEN no = no - 1
IF a$ = CHR$(0) + "P" THEN no = no + 1
IF a$ = "8" THEN no = no - 1
IF a$ = "2" THEN no = no + 1
IF no = -1 THEN no = 10
IF no = 11 THEN no = 0
GOTO nocls
SYSTEM
center:
l = LEN(text$)
x = INT((80 - l) / 2)
LOCATE , x
PRINT text$
RETURN
wadmenu:
COLOR , w
CLS
LOCATE 1, 1
COLOR f, b
no = 1
numfile = 1
lnumfile = 1
text$ = "Press 'A' to add a wadfile, 'D' to delete a wadfile from the list."
LOCATE 1
GOSUB center
text$ = "Use Arrow Keys and PGUP/PGDN to scroll"
LOCATE 2
GOSUB center
LOCATE 3, 9
PRINT " Available "
FOR y = 5 TO 14
LOCATE y, 9
PRINT "║"
LOCATE y, 22
PRINT "║"
NEXT y
FOR x = 10 TO 21
LOCATE 4, x
PRINT "═"
LOCATE 15, x
PRINT "═"
NEXT x
LOCATE 4, 9
PRINT "╔"
LOCATE 4, 22
PRINT "╗"
LOCATE 15, 22
PRINT "╝"
LOCATE 15, 9
PRINT "╚"
LOCATE 3, 49
PRINT " Loaded "
FOR y = 5 TO 14
LOCATE y, 49
PRINT "║"
LOCATE y, 62
PRINT "║"
NEXT y
FOR x = 50 TO 61
LOCATE 4, x
PRINT "═"
LOCATE 15, x
PRINT "═"
NEXT x
LOCATE 4, 49
PRINT "╔"
LOCATE 4, 62
PRINT "╗"
LOCATE 15, 62
PRINT "╝"
LOCATE 15, 49
PRINT "╚"
refresh:
FOR x = numfile TO numfile + 9
LOCATE x - numfile + 5, 10
COLOR f, b
IF no = x - numfile + 1 THEN COLOR b, f
IF x <= 100 AND x < filenum THEN PRINT file$(x) + STRING$(12 - LEN(file$(x)), 32)
IF x >= filenum THEN PRINT " "
NEXT x
FOR x = lnumfile TO lnumfile + 9
LOCATE x - lnumfile + 5, 50
COLOR f, b
IF no = x - lnumfile + 11 THEN COLOR b, f
IF x <= 100 THEN PRINT wads$(x) + STRING$(12 - LEN(wads$(x)), 32)
NEXT x
DO
a$ = UCASE$(INKEY$)
LOOP WHILE a$ = ""
a = ASC(a$)
IF a$ = CHR$(0) + "H" THEN no = no - 1
IF a$ = CHR$(0) + "P" THEN no = no + 1
IF a$ = CHR$(0) + "K" THEN no = no + 10
IF a$ = CHR$(0) + "M" THEN no = no - 10
IF a$ = CHR$(0) + "Q" AND no <= 10 THEN numfile = numfile + 1
IF a$ = CHR$(0) + "Q" AND no > 10 THEN lnumfile = lnumfile + 1
IF a$ = CHR$(0) + "I" AND no <= 10 THEN numfile = numfile - 1
IF a$ = CHR$(0) + "I" AND no > 10 THEN lnumfile = lnumfile - 1
IF numfile < 1 THEN numfile = 1
IF numfile > 190 THEN numfile = 190
IF lnumfile < 1 THEN lnumfile = 1
IF lnumfile > 190 THEN lnumfile = 190
IF a$ = "D" AND no > 10 AND lastwad > 0 THEN GOSUB delete
IF a$ = "A" AND no <= 10 AND lastwad < 200 THEN GOSUB add
IF no > 20 THEN no = no - 20
IF no < 1 THEN no = no + 20
IF a = 27 THEN GOTO 0
GOTO refresh
delete:
lastwad = lastwad - 1
wads$(lnumfile + no - 11) = ""
FOR x = lnumfile + no - 11 TO lastwad
wads$(x) = wads$(x + 1)
NEXT x
wads$(lastwad + 1) = ""
RETURN
add:
lastwad = lastwad + 1
wads$(lastwad) = file$(numfile + no - 1)
RETURN
save:
OPEN "dmatch.dat" FOR OUTPUT AS #1
PRINT #1, dial '0=dial 1=answer 2=connected
PRINT #1, coop '0=cooperative 1=deathmatch 2=altdeath
PRINT #1, comport
PRINT #1, pnumber$
PRINT #1, diff
PRINT #1, episode
PRINT #1, level
PRINT #1, lgame
PRINT #1, monsters '0=no monsters 1=regular monsters 2=respawning monsters
FOR x = 1 TO lastwad
PRINT #1, wads$(x)
NEXT x
CLOSE #1
RETURN
start:
OPEN "fixins.dat" FOR OUTPUT AS #1
IF coop < 3 THEN
PRINT #1, "-COM" + LTRIM$(STR$(comport))
IF dial = 0 THEN PRINT #1, "-DIAL " + pnumber$
IF dial = 1 THEN PRINT #1, "-ANSWER"
IF coop >= 1 THEN PRINT #1, "-DEATHMATCH"
IF coop = 2 THEN PRINT #1, "-ALTDEATH"
END IF
PRINT #1, "-DIFFICULTY" + STR$(diff)
IF lgame > -1 THEN PRINT #1, "-LOADGAME " + LTRIM$(STR$(lgame))
PRINT #1, "-EPISODE " + LTRIM$(STR$(episode))
PRINT #1, "-LEVEL " + LTRIM$(STR$(level))
IF monsters = 0 THEN PRINT #1, "-NOMONSTERS"
IF monsters = 2 THEN PRINT #1, "-RESPAWN"
IF lnumfile > 0 THEN
PRINT #1, "-FILE ";
FOR x = 1 TO lastwad
PRINT #1, wads$(x) + " ";
NEXT x
PRINT #1, ""
END IF
CLOSE #1
OPEN "file.bat" FOR OUTPUT AS #1
PRINT #1, "@echo off"
PRINT #1, "CLS"
IF coop < 3 THEN
PRINT #1, "SERSETUP @FIXINS.DAT"
END IF
IF coop = 3 THEN
PRINT #1, "DOOM @FIXINS.DAT"
END IF
PRINT #1, "DMATCH"
CLOSE #1
SYSTEM
done:
OPEN "FILE.BAT" FOR OUTPUT AS #1
PRINT #1, "@echo off"
PRINT #1, "CLS"
PRINT #1, "echo Thanks for using Davematch! Y'all come back now, ya hear?"
CLOSE #1
SYSTEM
phonelist:
no = 1
OPEN "modem.num" FOR INPUT AS #1
FOR a = 1 TO 19 STEP 2
IF NOT EOF(1) THEN INPUT #1, plist$(a)
IF NOT EOF(1) THEN INPUT #1, plist$(a + 1)
IF NOT EOF(1) THEN INPUT #1, nul$
NEXT a
CLOSE #1
COLOR , w
CLS
LOCATE 1: text$ = "Press E on a line to edit it, S to save settings.": GOSUB center
newlist:
LOCATE 2
COLOR , b
text$ = "╔" + STRING$(50, 205) + "╗"
GOSUB center
FOR a = 1 TO 19 STEP 2
COLOR f, b
IF no = (a + 1) / 2 THEN COLOR b, f
LOCATE ((a + 1) / 2) + 2
text$ = "║" + plist$(a) + " " + plist$(a + 1) + STRING$(50 - LEN(plist$(a) + " " + plist$(a + 1)), 32) + "║"
GOSUB center
NEXT a
LOCATE 13
COLOR f, b
text$ = "╚" + STRING$(50, 205) + "╝"
GOSUB center
DO
a$ = UCASE$(INKEY$)
LOOP WHILE a$ = ""
a = ASC(a$)
IF a$ = CHR$(0) + "H" THEN no = no - 1
IF a$ = CHR$(0) + "P" THEN no = no + 1
IF no = 11 THEN no = 1
IF no = 0 THEN no = 10
IF a = 27 THEN GOTO 0
IF a = 13 THEN pnumber$ = plist$(no * 2): GOTO 0
IF a$ = "E" THEN GOTO edit
IF a$ = "S" THEN GOSUB save2
GOTO newlist
edit:
LOCATE 2, 1
COLOR f, b
INPUT "Name"; plist$(no * 2 - 1)
INPUT "Phone Number"; plist$(no * 2)
GOTO phonelist
save2:
OPEN "modem.num" FOR OUTPUT AS #1
FOR a = 1 TO 19 STEP 2
PRINT #1, plist$(a)
PRINT #1, plist$(a + 1)
PRINT #1, ""
NEXT a
CLOSE #1
RETURN